package com.ruoyi.datastatistics.service;

import com.ruoyi.datastatistics.domain.TerminalsDayfreezeDb;
import com.ruoyi.datastatistics.domain.TerminalsMonfreezeDb;
import com.ruoyi.datastatistics.model.TerminalsDayRangeFreezeDbResultModel;
import com.ruoyi.datastatistics.vo.DbHourUsageVO;
import com.ruoyi.datastatistics.vo.MiniFlowComparisonVO;
import com.ruoyi.datastatistics.vo.PressureWatchVO;

import java.util.List;
import java.util.Map;

/**
 * 大表日用量数据Service接口
 *
 * @author ruoyi
 * @date 2023-09-07
 */
public interface ITerminalsDayfreezeDbService {
    /**
     * 查询大表日用量数据
     *
     * @param Id 大表日用量数据主键
     * @return 大表日用量数据
     */
    public TerminalsDayfreezeDb selectTerminalsDayfreezeDbById(Long Id);

    /**
     * 查询大表日用量数据列表
     *
     * @param terminalsDayfreezeDb 大表日用量数据
     * @return 大表日用量数据集合
     */
    public List<TerminalsDayfreezeDb> selectTerminalsDayfreezeDbList(TerminalsDayfreezeDb terminalsDayfreezeDb);

    public List<TerminalsDayfreezeDb> getTerminalsDayfreezeDbList(Map<String, Object> paramMap);

    public List<TerminalsDayfreezeDb> getTerminalsDayfreezeDbLists(String TerminalID, String startTime, String endTime);

    /**
     * 新增大表日用量数据
     *
     * @param terminalsDayfreezeDb 大表日用量数据
     * @return 结果
     */
    public int insertTerminalsDayfreezeDb(TerminalsDayfreezeDb terminalsDayfreezeDb);

    /**
     * 修改大表日用量数据
     *
     * @param terminalsDayfreezeDb 大表日用量数据
     * @return 结果
     */
    public int updateTerminalsDayfreezeDb(TerminalsDayfreezeDb terminalsDayfreezeDb);

    /**
     * 批量删除大表日用量数据
     *
     * @param Ids 需要删除的大表日用量数据主键集合
     * @return 结果
     */
    public int deleteTerminalsDayfreezeDbByIds(Long[] Ids);

    /**
     * 删除大表日用量数据信息
     *
     * @param Id 大表日用量数据主键
     * @return 结果
     */
    public int deleteTerminalsDayfreezeDbById(Long Id);

    List<TerminalsDayRangeFreezeDbResultModel> getTerminalsDayRangeFreezeDbList(Map<String, Object> paramMap);

    List<TerminalsDayfreezeDb> listThirtyDaysFlow(TerminalsDayfreezeDb terminalsDayfreezeDb);


    /**
     * 大表综合报表日数据
     * @param terminalsDayfreezeDb 查询条件
     * @return List
     */
    List<TerminalsDayfreezeDb> reportListByDay(TerminalsDayfreezeDb terminalsDayfreezeDb);

    /**
     * 大表时用量
     * @param usageVO usageVO
     * @return List
     */
    List<DbHourUsageVO> hourUsages(DbHourUsageVO usageVO);

    /**
     * 大表时用量统计
     * @param usageVO 查询条件
     * @return long
     */
    Long countHourUsages(DbHourUsageVO usageVO);

    /**
     * 获取夜间最小流对比数据
     * @param miniFlowComparisonVO 查询条件
     * @return 夜间最小流对比数据
     */
    List<MiniFlowComparisonVO> getMiniFlowComparisonList(MiniFlowComparisonVO miniFlowComparisonVO);

    /**
     * 获取压力监测数据
     * @param watchVO watchVO
     * @return List
     */
    List<PressureWatchVO> getPressureWatchList(PressureWatchVO watchVO);



}
